/**
 * 
 */
package br.com.skynix.tcmc.model.venda;

import java.math.BigDecimal;
import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.skynix.tcmc.base.model.EntidadeAuditavel;

/**
 * @author davi
 * 
 */
@Entity
@Table(name = "tb_espelho")
public class Espelho extends EntidadeAuditavel {
	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_item_pedido_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK001_espelho")
	private ItemPedido itemPedido;

	@ManyToOne
	@JoinColumn(name = "id_tipo_comissao_fk", nullable = true,
			referencedColumnName = "id")
	@ForeignKey(name = "FK002_espelho")
	private TipoComissao tipoComissao;

	@ManyToOne
	@JoinColumn(name = "id_descricao_espelho_fk", nullable = true,
			referencedColumnName = "id")
	@ForeignKey(name = "FK003_espelho")
	private DescricaoEspelho descricaoEspelho;

	@Size(max = 100)
	@Column(name = "num_contrato", nullable = true, length = 100)
	private String numeroContrato;

	@Size(max = 50)
	@Column(nullable = true, length = 50)
	private String gsm;

	@Column(name = "data_ativacao", nullable = true)
	private Timestamp dataAtivacao;

	@Column(name = "data_cancelamento", nullable = true)
	private Timestamp dataCancelamento;

	@ManyToOne
	@JoinColumn(name = "id_tipo_venda_fk", nullable = true,
			referencedColumnName = "id")
	@ForeignKey(name = "FK004_espelho")
	private TipoVenda tipoVenda;

	@Column(name = "valor_unitario", nullable = true, precision = 15, scale = 2)
	private BigDecimal valorUnitario;

	/**
	 * @return the itemPedido
	 */
	public ItemPedido getItemPedido() {
		return itemPedido;
	}

	/**
	 * @param itemPedido the itemPedido to set
	 */
	public void setItemPedido(ItemPedido itemPedido) {
		this.itemPedido = itemPedido;
	}

	/**
	 * @return the tipoComissao
	 */
	public TipoComissao getTipoComissao() {
		return tipoComissao;
	}

	/**
	 * @param tipoComissao the tipoComissao to set
	 */
	public void setTipoComissao(TipoComissao tipoComissao) {
		this.tipoComissao = tipoComissao;
	}

	/**
	 * @return the descricaoEspelho
	 */
	public DescricaoEspelho getDescricaoEspelho() {
		return descricaoEspelho;
	}

	/**
	 * @param descricaoEspelho the descricaoEspelho to set
	 */
	public void setDescricaoEspelho(DescricaoEspelho descricaoEspelho) {
		this.descricaoEspelho = descricaoEspelho;
	}

	/**
	 * @return the numeroContrato
	 */
	public String getNumeroContrato() {
		return numeroContrato;
	}

	/**
	 * @param numeroContrato the numeroContrato to set
	 */
	public void setNumeroContrato(String numeroContrato) {
		this.numeroContrato = numeroContrato;
	}

	/**
	 * @return the gsm
	 */
	public String getGsm() {
		return gsm;
	}

	/**
	 * @param gsm the gsm to set
	 */
	public void setGsm(String gsm) {
		this.gsm = gsm;
	}

	/**
	 * @return the dataAtivacao
	 */
	public Timestamp getDataAtivacao() {
		return dataAtivacao;
	}

	/**
	 * @param dataAtivacao the dataAtivacao to set
	 */
	public void setDataAtivacao(Timestamp dataAtivacao) {
		this.dataAtivacao = dataAtivacao;
	}

	/**
	 * @return the dataCancelamento
	 */
	public Timestamp getDataCancelamento() {
		return dataCancelamento;
	}

	/**
	 * @param dataCancelamento the dataCancelamento to set
	 */
	public void setDataCancelamento(Timestamp dataCancelamento) {
		this.dataCancelamento = dataCancelamento;
	}

	/**
	 * @return the tipoVenda
	 */
	public TipoVenda getTipoVenda() {
		return tipoVenda;
	}

	/**
	 * @param tipoVenda the tipoVenda to set
	 */
	public void setTipoVenda(TipoVenda tipoVenda) {
		this.tipoVenda = tipoVenda;
	}

	/**
	 * @return the valorUnitario
	 */
	public BigDecimal getValorUnitario() {
		return valorUnitario;
	}

	/**
	 * @param valorUnitario the valorUnitario to set
	 */
	public void setValorUnitario(BigDecimal valorUnitario) {
		this.valorUnitario = valorUnitario;
	}
}
